//题目：给你一个下标从 0 开始的二进制数组 nums ，数组长度为 n 。nums 可以按下标 i（ 0 <= i <= n ）拆分成两个数组（可能为空）：numsleft 和 numsright 。
//numsleft 包含 nums 中从下标 0 到 i - 1 的所有元素（包括 0 和 i - 1 ），而 numsright 包含 nums 中从下标 i 到 n - 1 的所有元素（包括 i 和 n - 1 ）。
//如果 i == 0 ，numsleft 为 空 ，而 numsright 将包含 nums 中的所有元素。
//如果 i == n ，numsleft 将包含 nums 中的所有元素，而 numsright 为 空 。
//下标 i 的 分组得分 为 numsleft 中 0 的个数和 numsright 中 1 的个数之 和 。
//返回 分组得分 最高 的 所有不同下标 。你可以按 任意顺序 返回答案。

//思路：
//1、首先我们引入权值的概念，我们假设左侧0的个数减去1的个数为左侧权值，右侧1的个数减去0的个数为右侧权值。
//2、我们遍历左侧时可以计算左侧权值x，右侧权值我们未知假设为y，我们希望总权值x+y最高。
//3、每当我们将遍历到的新的值从右侧加入左侧时，如果是0，意味着左侧权值x+1右侧权值y也+1，是1则同时-1。
//4、左侧权值高，右侧权值就也高，因此我们始终不必去在意右侧，遍历左侧找到最大权值即可。
//5、res初始值存在0，排除左侧权值始终为负数的可能。

var maxScoreIndices = function(nums) {
    let max = 0; score = 0; res = [0]
    for(let i = 0; i <= nums.length; i ++){
        score = nums[i] === 0 ? score + 1 : score - 1
        if(score === max){
            res.push(i+1)
        } else if ( max < score){
            max = score
            res = [ i+1 ]
        }
    }
    return res
};

// console.log(maxScoreIndices([0,0,1,0]))

//两数之和
//给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target  的那 两个 整数，并返回它们的数组下标。
//你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。
//你可以按任意顺序返回答案。

var twoSum = function(nums, target) {
    for(let i = 0; i < nums.length - 1; i++){
        let num1 = nums[i]
        for( let j = i + 1; j < nums.length; j ++){
            let num2 = nums[j]
            if(num1 + num2 === target){
                return [i,j]
            }
        }
    }
    return [0,0]
};
